生成模型 (Generative Model) 網路一直都是 machine learing中熱門的題目。除了過往的幾年中常被提起的 VAE (Variational Auto-Encoder)與 GAN (Generative Adversarial Network),近年崛起、復辟成功的其中一個方法就是擴散模型 (Diffusion Model)。
啟發於非平衡態熱力學 (Non-Equilibrium Thermodynamics), diffusion model是一個透過變分推斷 (Variational Inference) 訓練的參數化馬可夫鍊 (Markov Chain),並且在許多任務上展現了超越 GAN的效果,其中最知名的應用莫過於 OpenAI的 DALL-E 2與 Google Brain的 Imagen。這篇文章主要會藉由DDPM (Denoising Diffusion Probabilistic Models) 簡化概念,以比較概念式的方法來介紹 diffusion model的原理與實作。
去噪擴散概率模型的原理很簡單,就是從混沌的顏色和色彩中取出我認為我要的部分,像是我今天想說我要一張貓咪的圖案!,我就告訴電腦這是一張照片、請給我貓咪的圖案,電腦會偵測說照片沒有貓咪呀? 有!這張照片裡面有一隻完整的貓咪,不過這張圖片被很多雜訊干擾了,請重複降噪直到產生出貓咪圖片,電腦此刻便開始運作
假設你想製作一個使用文本生成圖片的模型。 您的目的是給出一段文本,然後給出一張隨機圖片(例如噪聲圖片)。 該模型可以幫助您生成與文字描述相匹配的逼真圖片,例如:
文字描述就像一個指南,幫助模型生成更符合語義信息的圖片。 然而,語義學習畢竟是複雜的。 我們能否退一步,讓模型能夠生成逼真的圖像?
例如,如果你給模型餵一堆賽博朋克風格的圖片,讓模型學習賽博朋克風格的分佈信息,然後給模型餵隨機噪聲,就可以讓模型產生一張逼真的賽博朋克照片。 或者給模型餵一堆人臉圖片,讓模型生成一張真實的人臉。 同樣,我們也可以選擇給訓練好的模型餵一張帶有一些信息的圖片,比如一張混有噪聲的人臉,讓模型幫我們去除噪聲,這在明天會再更仔細的敘述。
很直覺地,要讓兩種資料的分布接近,也就是 maximize likelihood estimation (MLE),或說 minimize some divergence。但描述真實資料的分布其實就是一個很難的問題,更遑論計算什麼 likelihood或 divergence。
這時候應該就有人想問了,為什麼我們不直接生成貓咪的圖片就好,還去訓練模型降噪、參數、調整權重,其實答案比我們想的還要簡單,如果你的模型一開始就會畫貓咪了,那也就沒必要訓練模型啦?但他不一定擁有學習繪畫的能力,只不過是單純照著過往餵給他的圖片產生出圖案而已,當然 這也有可能造成Overfitting 之類的問題,但那又是另一個領域了
https://www.cvmart.net/community/detail/7942
https://www.youtube.com/watch?v=azBugJzmz-o&ab_channel=Hung-yiLee